<?php

/*
  --- PROJECT COFELY 2011, StatStatistiekenRapport --
  @author: Leander Molegraaf
  @category: statistieken
  @name StatStatistiekenRapport

  @uses StatProfitcenter.php

  @version 1.2.2
  datum 21/06/2012

  BESCHRIJVING:
  Deze klasse initieert een lijst van profitcenters die op hun beurt voor elke profitcenter
  de gegevens van de afgelopen maand weergeven.
  WERKING:
  Deze klasse wordt aangeroepen met 4 waardes:
  - de statistieksoort (TBM/WPI)
  - een databaseklasse
  - de maand van het begin van de filterperiode
  - de jaar van het begin van de filterperiode

  OPMERKINGEN:
  1.1 Er wordt een al ingevulde DBklasse verwacht.

  CHANGELOG:
  1.2:
  - bestandsnamen van de statistiek beginnen allemaal met Stat
  - generateTable verwijderd

  1.2.1:
  - ontwerp geupdate
  - benamingen verduidelijkt
 * 
  1.2.2:
  - documentatie(inline/top) geupdate
  - de for-loop die de profitcenterlijst vulde stond eerst in de constructor
  maar is nu verplaatst naar een nieuwe functie fillBedrijfsonderdelenLijst

 */
require_once 'defs/Constants.php';
require_once(FILE_CLASS_BEDRIJFSONDERDEEL);

class StatLaag {

    public $BedrijfsonderdelenLijst; //array met Profitcenter objecten
    private $statistiekSoort; //String
    private $StatistiekDB; //klasse
    private $laagID;
    private $aantalGemist;
    private $aantalGemistPercentage;
    private $aantalGemistMetReden;
    private $aantalGemistMetRedenPercentage;
    private $aantalGevolgd;
    private $aantalGevolgdPercentage;
    private $beginFilterPeriodeMaand;
    private $beginFilterPeriodeJaar;
    private $eindFilterPeriodeMaand;
    private $eindFilterPeriodeJaar;
    private $naam;

    /**
     * constructor
     * @param String $statistiekSoort welke type statistiek dit is (WPI/TBM)
     * @param StatStatistiekenRapport $statistiekDB de databaseklassen
     * $param int $beginFilterPeriodeMaand de maand vanaf wanneer gefilterd moet worden
     * @param int $beginFilterPeriodeJaar de jaar vanaf wanneer gefilterd moet worden
     * @since Version 1.0
     */
    public function __construct($statistiekSoort, $StatistiekDB, $beginFilterPeriodeMaand, $beginFilterPeriodeJaar, $laag) {//String, Persoonsklasse
        $this->setAantalGemist($laag->getAantalGemist());
        $this->setAantalGevolgd($laag->getAantalGevolgd());
        $this->setAantalGemistMetReden($laag->getAantalGemistMetReden());
        $this->setAantalGemistPercentage($laag->getAantalGemistPercentage());
        $this->setAantalGevolgdPercentage($laag->getAantalGevoldPercentage());
        $this->setAantalGemistMetRedenPercentage($laag->getAantalGemistMetRedenPercentage());

        $this->setBeginFilterPeriodeJaar($beginFilterPeriodeJaar);
        $this->setBeginFilterPeriodeMaand($beginFilterPeriodeMaand);
        $this->setEindFilterPeriodeJaar($laag->getEindFilterPeriodeJaar());
        $this->setEindFilterPeriodeMaand($laag->getEindFilterPeriodeMaand());
        $this->setLaagID($laag->getLaagID());
        $this->setNaam($laag->getNaam());
        $this->setStatistiekSoort($statistiekSoort);

        $this->StatistiekDB = $StatistiekDB;
        $this->fillBedrijfsonderdelenLijst($laag);
    }

    public function getAantalGemistPercentage() {
        return $this->aantalGemistPercentage;
    }

    public function setAantalGemistPercentage($aantalGemistPercentage) {
        $this->aantalGemistPercentage = $aantalGemistPercentage;
    }

    public function getAantalGemistMetReden() {
        return $this->aantalGemistMetReden;
    }

    public function setAantalGemistMetReden($aantalGemistMetReden) {
        $this->aantalGemistMetReden = $aantalGemistMetReden;
    }

    public function getAantalGemistMetRedenPercentage() {
        return $this->aantalGemistMetRedenPercentage;
    }

    public function setAantalGemistMetRedenPercentage($aantalGemistMetRedenPercentage) {
        $this->aantalGemistMetRedenPercentage = $aantalGemistMetRedenPercentage;
    }

    public function getAantalGevolgdPercentage() {
        return $this->aantalGevolgdPercentage;
    }

    public function setAantalGevolgdPercentage($aantalGevolgdPercentage) {
        $this->aantalGevolgdPercentage = $aantalGevolgdPercentage;
    }

    public function getLaagID() {
        return $this->laagID;
    }

    public function setLaagID($laagID) {
        $this->laagID = $laagID;
    }

    public function getAantalGemist() {
        return $this->aantalGemist;
    }

    public function setAantalGemist($aantalGemist) {
        $this->aantalGemist = $aantalGemist;
    }

    public function getAantalGevolgd() {
        return $this->aantalGevolgd;
    }

    public function setAantalGevolgd($aantalGevolgd) {
        $this->aantalGevolgd = $aantalGevolgd;
    }

    public function getBeginFilterPeriodeMaand() {
        return $this->beginFilterPeriodeMaand;
    }

    public function setBeginFilterPeriodeMaand($beginFilterPeriodeMaand) {
        $this->beginFilterPeriodeMaand = $beginFilterPeriodeMaand;
    }

    public function getBeginFilterPeriodeJaar() {
        return $this->beginFilterPeriodeJaar;
    }

    public function setBeginFilterPeriodeJaar($beginFilterPeriodeJaar) {
        $this->beginFilterPeriodeJaar = $beginFilterPeriodeJaar;
    }

    public function getEindFilterPeriodeMaand() {
        return $this->eindFilterPeriodeMaand;
    }

    public function setEindFilterPeriodeMaand($eindFilterPeriodeMaand) {
        $this->eindFilterPeriodeMaand = $eindFilterPeriodeMaand;
    }

    public function getEindFilterPeriodeJaar() {
        return $this->eindFilterPeriodeJaar;
    }

    public function setEindFilterPeriodeJaar($eindFilterPeriodeJaar) {
        $this->eindFilterPeriodeJaar = $eindFilterPeriodeJaar;
    }

    public function getNaam() {
        return $this->naam;
    }

    public function setNaam($naam) {
        $this->naam = $naam;
    }

    /**
     * functie die de lagenlijst vult
     * @name fillBedrijfsonderdelenLijst
     * @param int $beginFilterPeriodeMaand de maand vanaf wanneer gefilterd moet worden
     * @param int $beginFilterPeriodeJaar de jaar vanaf wanneer gefilterd moet worden
     * @since 1.2.2
     * @returns void
     */
    private function fillBedrijfsonderdelenLijst($laag) {
        $lijst = $laag->getBedrijfsonderdeelLijst();

        for ($nummer = 0; $nummer < count($lijst); $nummer++) {
            $this->BedrijfsonderdelenLijst[$nummer] = new StatBedrijfsonderdeel($lijst[$nummer], $this->getStatistiekSoort(), $this->StatistiekDB);
        }
    }

    public function getBedrijfsonderdelenLijst() {
        return $this->BedrijfsonderdelenLijst;
    }

    public function getStatistiekSoort() {
        return $this->statistiekSoort;
    }

    public function setStatistiekSoort($statistiekSoort) {
        $this->statistiekSoort = $statistiekSoort;
    }

}

?>